-
Notifications
You must be signed in to change notification settings - Fork 12.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
introduce universes to NLL type check #52488
introduce universes to NLL type check #52488
Conversation
Ah, shoot, the conflicts here are a bit "deep-ish". Have to think about best way to resolve. |
@bors try still, I think we can do a try run to measure perf... |
🔒 Merge conflict This pull request and the master branch diverged in a way that cannot be automatically merged. Please rebase on top of the latest master branch, and let the reviewer approve again. How do I rebase?Assuming
You may also read Git Rebasing to Resolve Conflicts by Drew Blessing for a short tutorial. Please avoid the "Resolve conflicts" button on GitHub. It uses Sometimes step 4 will complete without asking for resolution. This is usually due to difference between how Error message
|
a31fc70
to
512352b
Compare
@bors try |
⌛ Trying commit 512352b28d257e64278b447319561185c1f6edb1 with merge b5045d96d659e3aa4c727f44caf5362cc6116be3... |
The job Click to expand the log.
I'm a bot! I can only do what humans tell me to, so if this was not helpful or you have suggestions for improvements, please ping or otherwise contact |
☀️ Test successful - status-travis |
@rust-timer build b5045d96d659e3aa4c727f44caf5362cc6116be3 |
Success: Queued b5045d96d659e3aa4c727f44caf5362cc6116be3 with parent 12ed235, comparison URL. |
Perf is ready. Tuple-stress is extremely slowed down (+50%), and also html5ever (+7%). OTOH coercions (-10%) and clap (-8%) are improved a lot. |
Interesting. I'll have to check out tuple-stress. |
Curious. I cannot reproduce this. Although I think my build is from before the rebase. Let me try again. |
After building the rebased variants, I get even more inexplicable results -- master takes 3x as long! |
c21fcc4
to
fecaf75
Compare
☔ The latest upstream changes (presumably #52250) made this pull request unmergeable. Please resolve the merge conflicts. |
d0ee8a4
to
52f8563
Compare
55902e6
to
0ec92e3
Compare
This way, we can iterate over a `Range<T>` where `T: Idx`
b0ef341
to
870efb1
Compare
Perf is ready. |
The job Click to expand the log.
I'm a bot! I can only do what humans tell me to, so if this was not helpful or you have suggestions for improvements, please ping or otherwise contact |
OK so perf looks great. Now just gotta fix the last trailing errors. |
The job Click to expand the log.
I'm a bot! I can only do what humans tell me to, so if this was not helpful or you have suggestions for improvements, please ping or otherwise contact |
The job Click to expand the log.
I'm a bot! I can only do what humans tell me to, so if this was not helpful or you have suggestions for improvements, please ping or otherwise contact |
@bors r=pnkfelix p=1 Resolves a major ICE for NLL, EP2 blocker. |
📌 Commit ce576ac has been approved by |
@bors p=10 |
… r=pnkfelix introduce universes to NLL type check This branch aims to fix #48071 and also advance chalk integration a bit at the same time. It re-implements the subtyping/type-equating check so that NLL doesn't "piggy back" on the subtyping code of the old type checker. This new code uses the "universe-based" approach to handling higher-ranked lifetimes, which sidesteps some of the limitations of the current "leak-based" scheme. This avoids the ICE in #48071. At the same time, I aim for this to potentially be a kind of optimization. This NLL code is (currently) not cached, but it also generates constraints without doing as much instantiation, substitution, and folding. Right now, though, it still piggy backs on the `relate_tys` trait, which is a bit unfortunate -- it means we are doing more hashing and things than we have to. I want to measure the see the perf. Refactoring that trait is something I'd prefer to leave for follow-up work. r? @pnkfelix -- but I want to measure perf etc first
☀️ Test successful - status-appveyor, status-travis |
revert accidental atty downgrade This got accidentally downgraded by rust-lang#52488 Cc @nikomatsakis @pnkfelix
revert accidental atty downgrade This got accidentally downgraded by rust-lang#52488 Cc @nikomatsakis @pnkfelix
This branch aims to fix #48071 and also advance chalk integration a bit at the same time. It re-implements the subtyping/type-equating check so that NLL doesn't "piggy back" on the subtyping code of the old type checker.
This new code uses the "universe-based" approach to handling higher-ranked lifetimes, which sidesteps some of the limitations of the current "leak-based" scheme. This avoids the ICE in #48071.
At the same time, I aim for this to potentially be a kind of optimization. This NLL code is (currently) not cached, but it also generates constraints without doing as much instantiation, substitution, and folding. Right now, though, it still piggy backs on the
relate_tys
trait, which is a bit unfortunate -- it means we are doing more hashing and things than we have to. I want to measure the see the perf. Refactoring that trait is something I'd prefer to leave for follow-up work.r? @pnkfelix -- but I want to measure perf etc first